package com.wind.taobao.api.trade.item.rest
{
	import com.wind.taobao.api.IPrivateAPI;
	import com.wind.taobao.core.exception.InvalidRequestParametersException;
	import com.wind.taobao.core.util.TaobaoUtils;
	import com.wind.taobao.core.webservice.TaobaoFileRequest;

	import flash.net.FileReference;

	/**
	 * taobao.item.add Request
	 * @author fxy
	 *
	 */
	public class ItemAddRequest extends TaobaoFileRequest implements IPrivateAPI
	{
		public override function get method():String
		{
			return "taobao.item.add"
		}
		/**
		 * Y 	 商品数量，取值范围:大于零的整数。数量需要等于SKU所有数量的和
		 */
		[Bindable]
		public var num:String;
		/**
		 * Y 	商品价格。取值范围:0-100000000;精确到2位小数;单位:元。如:200.07，表示:200元7分。需要在正确的价格区间内。
		 */
		[Bindable]
		public var price:String;
		/**
		 * Y 	发布类型。可选值:fixed(一口价),auction(拍卖)。B商家不能发布拍卖商品，而且拍卖商品是没有SKU的
		 */
		[Bindable]
		public var type:String;
		/**
		 * Y 	新旧程度。可选值：<br>
		 * new(新)，<br>
		 * second(二手)，<br>
		 * unused(闲置)。<br>
		 * B商家不能发布二手商品。如果是二手商品，特定类目下属性里面必填新旧成色属性
		 */
		[Bindable]
		public var stuff_status:String;
		/**
		 * Y 	宝贝标题。不能超过60字节，受违禁词控制
		 */
		[Bindable]
		public var title:String;
		/**
		 * Y 	宝贝描述。字数要大于5个字符，小于25000个字符，受违禁词控制
		 */
		[Bindable]
		public var desc:String;
		/**
		 * Y 	所在地省份。如浙江，具体可以用taobao.areas.get 取到
		 */
		[Bindable]
		public var location__state:String;
		/**
		 * Y 	所在地城市。如杭州 。具体可以用taobao.areas.get 取到
		 */
		[Bindable]
		public var location__city:String;
		/**
		 * N 	商品上传后的状态。可选值:onsale(出售中),instock(仓库中);默认值:onsale
		 */
		[Bindable]
		public var approve_status:String;
		/**
		 * Y 	叶子类目id
		 */
		[Bindable]
		public var cid:String;
		/**
		 * N 	商品属性列表。格式:pid:vid;pid:vid。属性的pid调用taobao.itemprops.get.v2取得，属性值的vid用taobao.itempropvalues.get取得vid。 如果该类目下面没有属性，可以不用填写。如果有属性，必选属性必填，其他非必选属性可以选择不填写.属性不能超过35对。所有属性加起来包括分割符不能超过549字节，单个属性没有限制。 如果有属性是可输入的话，则用字段input_str填入属性的值
		 */
		[Bindable]
		public var props:String;
		/**
		 * N 	运费承担方式。可选值:<br>
		 * seller（卖家承担）,buyer(买家承担);默认值:seller。卖家承担不用设置邮费和postage_id.买家承担的时候，必填邮费和postage_id如果用户设置了运费模板会优先使用运费模板，否则要同步设置邮费（post_fee,express_fee,ems_fee）
		 */
		[Bindable]
		public var freight_payer:String;
		/**
		 * N 	有效期。可选值:7,14;单位:天;默认值:14
		 */
		[Bindable]
		public var valid_thru:String;
		/**
		 * N 	是否有发票。可选值:true,false (商城卖家此字段必须为true);默认值:false(无发票)
		 */
		[Bindable]
		public var has_invoice:String;
		/**
		 * N 	是否有保修。可选值:true,false;默认值:false(不保修)
		 */
		[Bindable]
		public var has_warranty:String;
		/**
		 * N 	自动重发。可选值:true,false;默认值:false(不重发)
		 */
		[Bindable]
		public var auto_repost:String;
		/**
		 * N 	橱窗推荐。可选值:true,false;默认值:false(不推荐)
		 */
		[Bindable]
		public var has_showcase:String;
		/**
		 * N 	商品所属的店铺类目列表。按逗号分隔。结构:",cid1,cid2,...,"，如果店铺类目存在二级类目，必须传入子类目cids。
		 */
		[Bindable]
		public var seller_cids:String;
		/**
		 * N 	支持会员打折。可选值:true,false;默认值:false(不打折)
		 */
		[Bindable]
		public var has_discount:String;
		/**
		 * N 	平邮费用。取值范围:0.01-10000.00;精确到2位小数;单位:元。如:5.07，表示:5元7分. 注:post_fee,express_fee,ems_fee需要一起填写
		 */
		[Bindable]
		public var post_fee:String;
		/**
		 * N 	快递费用。取值范围:0.01-10000.00;精确到2位小数;单位:元。如:15.07，表示:15元7分
		 */
		[Bindable]
		public var express_fee:String;
		/**
		 * N 	ems费用。取值范围:0-100000000;精确到2位小数;单位:元。如:25.07，表示:25元7分
		 */
		[Bindable]
		public var ems_fee:String;
		/**
		 * N 	定时上架时间。(时间格式：yyyy-MM-dd HH:mm:ss)
		 */
		[Bindable]
		public var list_time:String;
		/**
		 * N 	加价幅度。如果为0，代表系统代理幅度
		 */
		[Bindable]
		public var increment:String;
		/**
		 * N 	商品主图片。类型:JPG,GIF;最大长度:500K
		 */
		[Bindable]
		public var image:FileReference;
		/**
		 * N 	宝贝所属的运费模板ID。模板可以通过taobao.postages.get获得
		 */
		[Bindable]
		public var postage_id:String;
		/**
		 * N 	商品的积分返点比例。如:5,表示:返点比例0.5%. 注意：返点比例必须是>0的整数，而且最大是90,即为9%.B商家在发布非虚拟商品时，返点必须是 5的倍数，即0.5%的倍数。其它是1的倍数，即0.1%的倍数
		 */
		[Bindable]
		public var auction_point:String;
		/**
		 * N 	属性值别名。如pid:vid:别名;pid1:vid1:别名1 ，其中：pid是属性id vid是属性值id。总长度不超过511字节
		 */
		[Bindable]
		public var property_alias:String;
		/**
		 * N 	用户自行输入的类目属性ID串。结构："pid1,pid2,pid3"，如："20000"（表示品牌） 注：通常一个类目下用户可输入的关键属性不超过1个。
		 */
		[Bindable]
		public var input_pids:String;
		/**
		 * N 	用户自行输入的子属性名和属性值，结构:"父属性值;一级子属性名;一级子属性值;二级子属性名;自定义输入值,....",如：“耐克;耐克系列;科比系列;科比系列;2K5,Nike 乔丹鞋;乔丹系列;乔丹鞋系列;乔丹鞋系列;json5”，多个自定义属性用','分割，input_str需要与input_pids一一对应，注：通常一个类目下用户可输入的关键属性不超过1个。所有属性别名加起来不能超过3999字节
		 */
		[Bindable]
		public var input_str:String;
		/**
		 * N 	更新的SKU的属性串，调用taobao.itemprops.get.v2获取类目属性，如果属性是销售属性，再用 taobao.itempropvalues.get取得vid。格式:pid:vid;pid:vid。该字段内的销售属性也需要在props字段填写。sku的销售属性需要一同选取，如:颜色，尺寸
		 */
		[Bindable]
		public var sku_properties:String;
		/**
		 * N 	SKU的数量串，结构如：num1,num2,num3 如：2,3
		 */
		[Bindable]
		public var sku_quantities:String;
		/**
		 * N 	SKU的价格串，结构如：10.00,5.00,… 精确到2位小数;单位:元。如:200.07，表示:200元7分
		 */
		[Bindable]
		public var sku_prices:String;
		/**
		 * N 	SKU的外部id串，结构如：1234,1342,…sku_properties, sku_quantities, sku_prices, sku_outer_ids在输入数据时要一一对应，如果没有sku_outer_ids可写成：“, ,”
		 */
		[Bindable]
		public var sku_outer_ids:String;
		/**
		 * N 	商品文字的字符集。繁体传入"zh_HK"，简体传入"zh_CN"，不传默认为简体
		 */
		[Bindable]
		public var lang:String;
		/**
		 * 	N 	商家编码
		 */
		[Bindable]
		public var outer_id:String;
		/**
		 * 商品所属的产品ID(B商家发布商品需要用)
		 */
		[Bindable]
		public var product_id:String;

		public override function getFileReference():FileReference
		{
			if (image && image.size > 0)
			{
				return image;
			}
			return null;
		}

		public override function validate():void
		{
			if (!TaobaoUtils.hasAllValue([num, price, type, stuff_status, title, desc, location__state, location__city, cid]))
			{
				throw new InvalidRequestParametersException("请求参数[num,price,type,stuff_status,title,desc,location__state,location__city,cid]不能为空");
			}
		}
	}
}